package org.fujay.langchain4jserver.application.command;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Data;
import org.fujay.langchain4jserver.domain.application.vo.AppId;
import org.fujay.langchain4jserver.domain.knowledge.vo.KnowledgeBaseId;
import org.fujay.langchain4jserver.domain.model.vo.ModelId;

/**
 * 更新应用配置命令
 */
@Data
@Builder
public class UpdateApplicationConfigurationCommand {

    /**
     * 应用ID
     */
    @NotNull(message = "应用ID不能为空")
    private AppId appId;

    /**
     * 新应用名称
     */
    private String newAppName;

    /**
     * 新应用描述
     */
    private String newAppDesc;

    /**
     * 新模型ID
     */
    private ModelId newModelId;

    /**
     * 是否使用知识库
     */
    private boolean useKb;

    /**
     * 知识库ID (如果 useKb 为 true 则必填)
     */
    private KnowledgeBaseId kbId;

    /**
     * 变更描述 (必填)
     */
    @NotBlank(message = "变更描述不能为空")
    private String changeDesc;
}
